一个对象有状态变化  
每次状态变化都会触发一个逻辑
不能总是用 if...else 来控制

示例
交通信号灯不同颜色的变化


场景

- 有限状态机
- 写一个简单的 Promise

- 有限状态机
    - 有限个状态、以及在这些状态之问的变化(收藏和取消)
    - 如交通信号灯
    - 使用开源 lib :javascript-state-machine
    - https://github.com/jakesgordon/javascript-state-machine


## 设计原则验证
- 将状态对象和主题对象分离，状态的变化逻辑单独处理
- 符合开放封闭原则